﻿//2208.将数组和减半的最少操作次数
#include <iostream>
#include <queue>
using namespace std;
class Solution
{
public:
	int halveArray(vector<int>& nums)
	{
		priority_queue<double> heap; // 创建⼀个⼤根堆
		double sum = 0.0;
		for (int x : nums) // 把元素都丢进堆中，并求出累加和
		{
			heap.push(x);
			sum += x;
		}
		sum /= 2.0; // 先算出⽬标和
		int count = 0;
		while (sum > 0) // 依次取出堆顶元素减半，直到减到之前的⼀半以下
		{
			double t = heap.top() / 2.0;//数组中最大值/2
			heap.pop();//堆顶 pop
			sum -= t;
			count++;//计数器
			heap.push(t);//减半后的数重新入堆
		}
		return count;
	}
};

int main() {

	return 0;
}